# -*- coding: utf-8 -*-

"""
DateTime   : 2020/12/24 11:02
Author     : ZhangYafei
Description: 
"""
from prettytable import PrettyTable

""" 1. 打印系统菜单 """
print('=' * 30)
print('|', end='')
print('名片管理系统 V1.0'.center(22), end='')
print('|')
print('-' * 30)
print('|', end='  ')
print('    用户操作说明'.ljust(20), end='')
print('|')
print('-' * 30)
print('|', end='  ')
print("1. 添加名片的信息".ljust(19), end='')
print('|')
print('|', end='  ')
print("2. 删除名片的信息".ljust(19), end='')
print('|')
print('|', end='  ')
print("3. 修改名片的信息".ljust(19), end='')
print('|')
print('|', end='  ')
print("4. 查询名片的信息".ljust(19), end='')
print('|')
print('|', end='  ')
print("5. 查询所有名片的信息".ljust(17), end='')
print('|')
print('|', end='  ')
print("6. 打印系统菜单".ljust(20), end='')
print('|')
print('|', end='  ')
print("7. 退出系统".ljust(22), end='')
print('|')
print('=' * 30)

""" 2. 定义名片存储数据结构 """
card_list = []

card_list.append({'姓名': '张亚飞', 'QQ': '1111111111', '微信': 'iamzhangyafei', '手机号': '1221121212'})
card_list.append({'姓名': '关羽', 'QQ': '1111111111', '微信': 'iamzhangyafei', '手机号': '1221121212'})

""" 3. 系统功能实现 """
while True:
    choice = input('请选择您需要执行的操作（Q/q退出,M/m打印菜单）>> ')
    if choice == '1':
        name = input('请输入姓名 >> ')
        for item in card_list:
            if name == item['姓名']:
                print('\033[1;32m', end='')
                print(f'对不起，{name} 已经添加过了')
                print('\033[0m')
                continue
        qq = input('请输入qq >> ')
        wechat = input('请输入微信 >> ')
        phone = input('请输入手机号 >> ')
        card_list.append({'姓名': name, 'QQ': qq, '微信': wechat, '手机号': phone})
        print('\033[1;32m', end='')
        print(f'{name} 的名片信息添加成功!')
    elif choice == '2':
        name = input('请输入您要删除名片信息的姓名 >> ')
        print('\033[1;32m', end='')
        for index, item in enumerate(card_list):
            if name == item['姓名']:
                del card_list[index]
                print(f'{name} 名片信息删除成功！')
                print('\033[0m')
                continue
        print(f'对不起，{name}的名片信息不存在!')
    elif choice == '3':
        name = input('请输入您要修改名片信息的姓名(B/b返回上一级) >> ')
        print('\033[1;32m', end='')
        for index, item in enumerate(card_list):
            if name == item['姓名']:
                print('查询到的名片信息为：')
                print('\033[1;31m', end='')
                table = PrettyTable(['姓名', 'QQ', '微信', '手机号'])
                table.add_row(item.values())
                print(table, end='')
                print('\033[0m')
                while True:
                    mod_field = input('请输入要修改的字段(B/b返回上一级) >> ')
                    if mod_field.lower() == 'b':
                        break
                    if mod_field not in item:
                        print('您输入的字段不存在，请重新输入！')
                        continue
                    new_value = input('请输入该字段的新值 >> ')
                    item[mod_field] = new_value
                    print('\033[1;32m', end='')
                    print(f'{name} 的 {mod_field} 修改成功！', end='')
                    print('\033[0m')
                break
        else:
            print(f'对不起，{name}的名片信息不存在!')
    elif choice == '4':
        name = input('请输入您要查询名片信息的姓名(B/b返回上一级) >> ')
        print("\033[1;32m", end='')
        for index, item in enumerate(card_list):
            if name == item['姓名']:
                print('查询到的名片信息为：')
                print("\033[1;31m", end='')
                table = PrettyTable(['姓名', 'QQ', '微信', '手机号'])
                table.add_row(item.values())
                print(table)
                break
        else:
            print(f'对不起，{name}的名片信息不存在!')
    elif choice == '5':
        print('\033[1;32m', end='')
        print(f'共查询到 {len(card_list)} 条记录，查询结果如下：')
        print('\033[1;31m', end='')
        table = PrettyTable(['姓名', 'QQ', '微信', '手机号'])
        for item in card_list:
            table.add_row(item.values())
        print(table)
    elif choice.lower() == 'm':
        print('=' * 30)
        print('|', end='')
        print('名片管理系统 V1.0'.center(22), end='')
        print('|')
        print('-' * 30)
        print('|', end='  ')
        print('    用户操作说明'.ljust(20), end='')
        print('|')
        print('-' * 30)
        print('|', end='  ')
        print("1. 添加名片的信息".ljust(19), end='')
        print('|')
        print('|', end='  ')
        print("2. 删除名片的信息".ljust(19), end='')
        print('|')
        print('|', end='  ')
        print("3. 修改名片的信息".ljust(19), end='')
        print('|')
        print('|', end='  ')
        print("4. 查询名片的信息".ljust(19), end='')
        print('|')
        print('|', end='  ')
        print("5. 查询所有名片的信息".ljust(17), end='')
        print('|')
        print('|', end='  ')
        print("6. 打印系统菜单".ljust(20), end='')
        print('|')
        print('|', end='  ')
        print("7. 退出系统".ljust(22), end='')
        print('|')
        print('=' * 30)
    elif choice.lower() == 'q':
        print('感谢使用，欢迎下次再来！')
        break
    else:
        print('您的选择有误，请重新选择！')
    print('\033[0m', end='')

